home *** CD-ROM | disk | FTP | other *** search
/ IRIX 5.3 for Indy R4400 / IRIX 5.3 for Indy R4400 175MHz.img / dist / eoe2.idb / usr / etc / runttcp.z / runttcp
Text File  |  1995-02-28  |  5KB  |  143 lines

  1. #!/bin/sh
  2. #
  3. # runttcp -p proto [-d dest] [-R remote] [-L local] [-r run tag] [-N nBytes]
  4. #           [-B singlesendsize]
  5. #
  6. # Executes a ttcp session both locally and remotely. Not all ttcp arguments are
  7. # used by this script - it's intended to be a simple performance neasurement 
  8. # tool. Hence, sink mode is used.
  9. # Arguments include:
  10. # -p    Protocol (tcp or udp)
  11. # -d    Destination (hostname, host alias, fully qualified domain name, or
  12. #    IP address in dot format) to which the local host will send. 
  13. # -R    Address of the remote host (hostname, host alias, fully qualified 
  14. #    domain name, or IP address in dot format) which will send to the
  15. #    local host. 
  16. # -L     Address of the local host (hostname, host alias, fully qualified 
  17. #    domain name, or IP address in dot format) which the remote host
  18. #    will send to.
  19. # -r    Run tag. An integer which will be used to label output files and
  20. #    generate non-colliding port numbers if bidirectional tests are
  21. #    being run. A tag of "5" will generate local output files t5 (sender's
  22. #    output) and r5 (receiver's output) for tests where the local host is 
  23. #    the sender, and rt5 and rr5 for tests where the remote host is the 
  24. #    sender.  Defaults to 1.
  25. # -N    Total number of bytes to send. Defaults to 8 Meg (8*1024*1024, or
  26. #       8388608) in the 3.3-comparison case, to slightly more than 8 Meg
  27. #       (4*1460*1460, or 8526400) in the optimized Ethernet TCP case, and
  28. #       to slightly more than 8 meg (2000*4352, or 8704000) in the optimized
  29. #       FDDI TCP case. Optimized cases send only MTU-multiples for send
  30. #    sizes of 1 MTU or greater, so each packet will be MTU-sized.
  31. # -B    Buffer size to send when only a single run is desired. Defaults to the
  32. #       uncommented standard series defined below by "lengths".
  33. # Examples:
  34. # runttcp -p tcp -r 1 -d speaker     : runs a TCP test with speaker as 
  35. #                       the target host, and locally generates
  36. #                      output files called t1 and r1.
  37. #
  38. # runttcp -p udp -r 4 -R foo -L speaker : runs a UDP testfrom the remote host
  39. #                      foo to the local host speaker, and 
  40. #                      locally generates output files called
  41. #                      rt4 and rr4 .
  42. #
  43. # runttcp assumes that ttcp resides in /usr/etc on all hosts, and also assumes
  44. # that any remote hosts have an open guest account. Should that not be the case
  45. # (that is, if the remote hosts(s) are not SGI machines), edit the rsh command 
  46. # lines to use appropriate remote logins and the correct remote directory path
  47. # to ttcp.
  48. #
  49. # Bidirectional tests may be run by specifying -d , -R , and -L .
  50. # If -R is specified but -L is not, -L defaults to the system hostname
  51. # (which may not be on the same network as the -R IP address).
  52. #
  53. # The number of cases to be run and the send size per case are specified 
  54. # in the defined character string "lengths" below. Choose the "lengths" and
  55. # "nbytes" pair appropriate to your test. Edit lengths to add or remove 
  56. # send-size cases - customization is encouraged.
  57.  
  58. USAGE="$0 -p proto [-d dest] [-L locaddr] [-R remaddr] [-r run] [-N nBytes] [-B single_sendsize]"
  59.  
  60. # for comparison with 3.3 figures, uncomment only the next two lines
  61. lengths="128 256 512 1024 1460 2048 3072 3584 4096 5120 5400 6144 7168 8192"
  62. nBytes=`expr 8 \* 1024 \* 1024`
  63.  
  64. # for Ethernet TCP optimum sends, uncomment only the next two lines
  65. #lengths="128 256 512 1024 1460 2920 5840 7300 8760 11680 14600 17520 35040 43800 58400 61320"
  66. #nBytes=`expr 4 \* 1460 \* 1460`
  67.  
  68. # for FDDI TCP tests, uncomment only the next two lines.
  69. #lengths="128 256 512 1024 2048 4352 8704 13056 21760 30464 43520 52224 60928" 
  70. #nBytes=`expr 20000 \* 4352`
  71.  
  72. myname=`hostname`
  73. run=1
  74. while getopts "p:d:r:L:R:N:B:" c; do
  75.     case $c in
  76.     p) proto="$OPTARG";;
  77.     d) dest="$OPTARG"; destination=yes;;
  78.     r) run="$OPTARG";;
  79.     R) hisname="$OPTARG"; remote=yes;;
  80.     L) myname="$OPTARG";; 
  81.     N) nBytes="$OPTARG";;
  82.     B) lengths="$OPTARG";;
  83.     \?) echo $USAGE; exit 1;;
  84.     esac
  85. done
  86. shift `expr $OPTIND - 1`
  87. if test "$#" != 0; then
  88.     echo $USAGE
  89.     exit 1
  90. fi
  91. if test "$proto" = "udp"; then
  92.    udp="-u"
  93. else
  94.    udp=""
  95. fi
  96. port=4000
  97. port=`expr $port + 100 \* $run`
  98. bport=`expr $port + 200 \* $run`
  99. echo "Starting $proto run $run"
  100. if test "$destination" = "yes"; then
  101.    op=t
  102.    output=$op$run
  103.    op=r
  104.    rout=$op$run
  105.    cp /dev/null $output
  106.    cp /dev/null $rout
  107. fi
  108. if test "$remote" = "yes"; then
  109.    bop=rt
  110.    bout=$bop$run
  111.    bop=rr
  112.    brout=$bop$run
  113.    cp /dev/null $bout
  114.    cp /dev/null $brout
  115. fi
  116. for buflen in $lengths; do
  117.    nBuf=`expr $nBytes / $buflen`
  118.    if test "$destination" = "yes"; then
  119.       echo "" >> $rout
  120.       rsh guest@$dest -n /usr/etc/ttcp -r -s $udp -p$port -n$nBuf -l$buflen >> $rout &
  121.    fi
  122.    if test "$remote" = "yes"; then
  123.       echo "" >> $brout
  124.       ttcp -r -s $udp -p$bport -n$nBuf -l$buflen >> $brout &
  125.    fi
  126.    sleep 2
  127.    echo "$buflen * $nBuf, port = $port"
  128.    if test "$remote" = "yes"; then
  129.       echo "" >> $bout
  130.       rsh guest@$hisname -n /usr/etc/ttcp -t -s $udp -p$bport -n$nBuf -l$buflen $myname >> $bout &
  131.    fi
  132.    if test "$destination" = "yes"; then
  133.       echo "" >> $output
  134.       ttcp -t -s $udp -p$port -n$nBuf -l$buflen $dest >> $output
  135.    fi
  136.    wait
  137.    sleep 4
  138.    port=`expr $port + 1`
  139.    bport=`expr $bport + 1`
  140. done
  141.